home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / vidhrdw / nitedrvr.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  3KB  |  116 lines

  1. /***************************************************************************
  2.  
  3.   vidhrdw.c
  4.  
  5.   Functions to emulate the video hardware of the machine.
  6.  
  7. ***************************************************************************/
  8.  
  9. #include "driver.h"
  10. #include "vidhrdw/generic.h"
  11.  
  12. /* machine/nitedrvr.c */
  13. extern int nitedrvr_gear;
  14. extern int nitedrvr_track;
  15.  
  16. /* local */
  17. unsigned char *nitedrvr_hvc;
  18.  
  19. WRITE_HANDLER( nitedrvr_hvc_w )
  20. {
  21.     nitedrvr_hvc[offset & 0x3f] = data;
  22.  
  23. //    if ((offset & 0x30) == 0x30)
  24. //        ;        /* Watchdog called here */
  25.  
  26.     return;
  27. }
  28.  
  29. static void nitedrvr_draw_block(struct osd_bitmap *bitmap, int bx, int by, int ex, int ey)
  30. {
  31.     int x,y;
  32.  
  33.     for (y=by; y<ey; y++)
  34.     {
  35.         for (x=bx; x<ex; x++)
  36.         {
  37.             if ((y<256) && (x<256))
  38.                 plot_pixel(bitmap, x, y, Machine->pens[1]);
  39.         }
  40.     }
  41.  
  42.     return;
  43. }
  44.  
  45. /***************************************************************************
  46.  
  47.   Draw the game screen in the given osd_bitmap.
  48.   Do NOT call osd_update_display() from this function, it will be called by
  49.   the main emulation engine.
  50.  
  51. ***************************************************************************/
  52. void nitedrvr_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
  53. {
  54.     int offs,roadway;
  55.     char gear_buf[] =  {0x07,0x05,0x01,0x12,0x00,0x00}; /* "GEAR  " */
  56.     char track_buf[] = {0x0e,0x0f,0x16,0x09,0x03,0x05, /* "NOVICE" */
  57.                         0x05,0x18,0x10,0x05,0x12,0x14, /* "EXPERT" */
  58.                         0x00,0x00,0x00,0x10,0x12,0x0f};/* "   PRO" */
  59.  
  60.     /* for every character in the Video RAM, check if it has been modified */
  61.     /* since last time and update it accordingly. */
  62.     for (offs = videoram_size - 1;offs >= 0;offs--)
  63.     {
  64.         if (dirtybuffer[offs])
  65.         {
  66.             int charcode;
  67.             int sx,sy;
  68.  
  69.             dirtybuffer[offs]=0;
  70.  
  71.             charcode = videoram[offs] & 0x3f;
  72.  
  73.             sx = 8 * (offs % 32);
  74.             sy = 16 * (offs / 32);
  75.             drawgfx(tmpbitmap,Machine->gfx[0],
  76.                     charcode, 0,
  77.                     0,0,sx,sy,
  78.                     &Machine->drv->visible_area,TRANSPARENCY_NONE,0);
  79.         }
  80.     }
  81.  
  82.     /* copy the character mapped graphics */
  83.     copybitmap(bitmap,tmpbitmap,0,0,0,0,&Machine->drv->visible_area,TRANSPARENCY_NONE,0);
  84.  
  85.     /* Draw roadway */
  86.     for (roadway=0; roadway < 16; roadway++)
  87.     {
  88.         int bx, by, ex, ey;
  89.  
  90.         bx = nitedrvr_hvc[roadway];
  91.         by = nitedrvr_hvc[roadway + 16];
  92.         ex = bx + ((nitedrvr_hvc[roadway + 32] & 0xf0) >> 4);
  93.         ey = by + (16 - (nitedrvr_hvc[roadway + 32] & 0x0f));
  94.  
  95.         nitedrvr_draw_block(bitmap,bx,by,ex,ey);
  96.     }
  97.  
  98.     /* Draw the "car backlight" */
  99.     nitedrvr_draw_block(bitmap,64,232,192,256);
  100.  
  101.     /* gear shift indicator - not a part of the original game!!! */
  102.     gear_buf[5]=0x30 + nitedrvr_gear;
  103.     for (offs = 0; offs < 6; offs++)
  104.         drawgfx(bitmap,Machine->gfx[0],
  105.                 gear_buf[offs],0,
  106.                 0,0,(offs)*8,31*8,
  107.                 &Machine->drv->visible_area,TRANSPARENCY_NONE,0);
  108.  
  109.     /* track indicator - not a part of the original game!!! */
  110.     for (offs = 0; offs < 6; offs++)
  111.         drawgfx(bitmap,Machine->gfx[0],
  112.                 track_buf[offs + 6*nitedrvr_track],0,
  113.                 0,0,(offs+26)*8,31*8,
  114.                 &Machine->drv->visible_area,TRANSPARENCY_NONE,0);
  115. }
  116.